<template id='retrieve'>
  <div class="retrieve">
    <SignCard :options="retrieveData" @click="submit">
      <template v-slot:descs>
        <div class="descs">
          <p class="desc">{{ retrieveData.desc }}</p>
        </div>
      </template>
      <template v-slot:form>
        <div class="form">
          <ZyInput :zyModel="retrieveData.email" ref="email"></ZyInput>
        </div>
      </template>
    </SignCard>
  </div>
</template>

<script>
// 这里可以导入其他文件（比如：组件，工具js，第三方插件js，json文件，图片文件等等）
import SignCard from "../../components/pc/SignCard.vue";
import { createNamespacedHelpers } from "vuex";
const retrieve = createNamespacedHelpers("retrieve");
const emailVerify = createNamespacedHelpers("emailVerify");
export default {
  name: "",
  components: {
    SignCard,
  },
  props: {},
  // 定义属性
  data() {
    return {};
  },
  // 计算属性，会监听依赖属性值随之变化
  computed: {
    ...retrieve.mapState(["retrieveData"]),
    ...emailVerify.mapState(["emailVerifyData"]),
  },
  // 监控data中的数据变化
  watch: {},
  // 方法集合
  methods: {
    ...emailVerify.mapMutations(["protectEmail"]),
    //发送邮件
    async submit() {
      let email = this.$refs.email.check("email");
      if (email) {
        let res = await this.$api.register.forgetPassApi({
          email: this.retrieveData.email.value,
        });
        if (this.$isCode(res, true)) {
          this.emailVerifyData.realEmail = this.retrieveData.email.value;
          this.protectEmail();
          this.$emit("submit");
        }
      }
    },
    //重置校验
    reset() {
      this.$refs.email.reset();
    },
  },
  // 生命周期 - 创建完成（可以访问当前this实例）
  created() {},
  // 生命周期 - 挂载完成（可以访问DOM元素）
  mounted() {},
  beforeCreate() {}, // 生命周期 - 创建之前
  beforeMount() {}, // 生命周期 - 挂载之前
  beforeUpdate() {}, // 生命周期 - 更新之前
  updated() {}, // 生命周期 - 更新之后
  beforeDestroy() {}, // 生命周期 - 销毁之前
  destroyed() {}, // 生命周期 - 销毁完成
  activated() {}, // 如果页面有keep-alive缓存功能，这个函数会触发
};
</script>

<style lang='less' scoped>
.retrieve {
  .descs {
    margin-top: 24px;
    color: @dColor;
    font-size: 18px;
    font-family: @tFamily;
    text-align: center;
    width: 320px;
    line-height: 1.5;

    .email {
      margin: 10px 0 30px 0;
      color: @tColor;
    }
  }

  .form {
    margin-top: 30px;

    .tips {
      margin-top: 60px;
      text-align: center;
      font-size: 14px;

      p {
        margin-bottom: 15px;
      }

      p:last-child {
        margin-bottom: 0;
      }

      .alink {
        user-select: none;
        cursor: pointer;
        border-bottom: 1px solid @tColor;
        width: fit-content;
        margin: 0 auto;
      }
    }
  }
}

//手机样式
@media screen and (max-width: 650px) {
  .descs {
    width: 100% !important;
  }

  .form {
    width: 100% !important;
  }
}
</style>